/*
 * Copyright 2008-2012 Centro Andaluz de Innovación y Tecnologías de la
 * Información y las Comunicaciones (CITIC). All Rights Reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
 *
 * Please contact CITIC - Edificio CITIC, C/ Marie Curie, 6 Parque
 * Tecnológico de Andalucía 29590 - Campanillas, Málaga, Spain
 * or visit www.citic.es, if you need additional information or
 * have any questions.
 */

package es.citic.puedes.youtube.model;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;


/**
 * class that represents a YouTube video
 * 
 * 
 */
public class YouTubeVideo {
	public static enum State {PUBLIC, PRIVATE};

	/**
	 * video title
	 */
	private String title;
	/**
	 * video authors
	 */
	private List<String> authors;
	/**
	 * video comments
	 */
	private List<YouTubeComment> comments;
	/**
	 * video publication state
	 */
	private YouTubeVideo.State publicationState;
	/**
	 * video rating
	 */
	private Float rating;
	/**
	 * video published date
	 */
	private Calendar published;
	/**
	 * video view count
	 */
	private Long viewCount;
	/**
	 * video description
	 */
	private String description;
	/**
	 * video url
	 */
	private String url;
	/**
	 * video duration
	 */
	private Long duration;
	/**
	 * video keywords
	 */
	private List<String> keyWords;
	/**
	 * video categories
	 */
	private List<Category> categories;
	/**
	 * video thumbnail
	 */
	private String thumbnail;
	/**
	 * video id
	 */
	private String videoId;

	/*
	 * //to delete private String commentsFeedUrl;
	 */

	/*	*//**
	 * @return the commentsFeedUrl
	 */
	/*
	 * public String getCommentsFeedUrl() { return commentsFeedUrl; }
	 *//**
	 * @param commentsFeedUrl
	 *            the commentsFeedUrl to set
	 */
	/*
	 * public void setCommentsFeedUrl(String commentsFeedUrl) {
	 * this.commentsFeedUrl = commentsFeedUrl; }
	 */

	public YouTubeVideo() {

		title = null;
		authors = new ArrayList<String>();
		comments = new ArrayList<YouTubeComment>();
		publicationState = null;
		rating = 0F;
		published = null;
		viewCount = new Long("0");
		description = null;
		url = null;
		duration = 0L;
		keyWords = new ArrayList<String>();
		categories = new ArrayList<Category>();
		thumbnail = null;
		videoId = null;

		/*
		 * //to delete... commentsFeedUrl=null;
		 */
	}

	/**
	 * @return the viewCount
	 */
	public long getViewCount() {
		return viewCount;
	}

	/**
	 * @param viewCount
	 *            the viewCount to set
	 */
	public void setViewCount(Long viewCount) {
		this.viewCount = viewCount;
	}

	/**
	 * @return the videoId
	 */
	public String getVideoId() {
		return videoId;
	}

	/**
	 * @param videoId
	 *            the videoId to set
	 */
	public void setVideoId(String videoId) {
		this.videoId = videoId;
	}

	/**
	 * @return the title
	 */
	public String getTitle() {
		return title;
	}

	/**
	 * @param title
	 *            the title to set
	 */
	public void setTitle(String title) {
		this.title = title;
	}

	/**
	 * @return the authors
	 */
	public List<String> getAuthors() {
		return authors;
	}

	/**
	 * @param authors
	 *            the authors to set
	 */
	public void setAuthors(List<String> authors) {
		this.authors = authors;
	}

	/**
	 * @return the comments
	 */
	public List<YouTubeComment> getComments() {
		return comments;
	}

	/**
	 * @param comments
	 *            the comments to set
	 */
	public void setComments(List<YouTubeComment> comments) {
		this.comments = comments;
	}

	/**
	 * @return the publication state of video
	 */
	public YouTubeVideo.State getPublicationState() {
		return publicationState;
	}

	/**
	 * @param publicationState
	 *            sets the publication state of video
	 */
	public void setPublicationState(YouTubeVideo.State publicationState) {
		this.publicationState = publicationState;
	}

	/**
	 * @return the rating
	 */
	public Float getRating() {
		return rating;
	}

	/**
	 * @param rating
	 *            the rating to set
	 */
	public void setRating(Float rating) {
		this.rating = rating;
	}

	/**
	 * @return date when the video was published
	 */
	public Calendar getPublished() {
		return published;
	}

	/**
	 * @param published
	 *            sets the date when the video was published
	 */
	public void setPublished(Calendar published) {
		this.published = published;
	}

	/*	*//**
	 * @param l
	 *            the viewCount to set
	 */
	/*
	 * 
	 * public void setViewCount(long l) { this.viewCount = l; }
	 */

	/**
	 * @return the description
	 */
	public String getDescription() {
		return description;
	}

	/**
	 * @param description
	 *            the description to set
	 */
	public void setDescription(String description) {
		this.description = description;
	}

	/**
	 * @return the url
	 */
	public String getUrl() {
		return url;
	}

	/**
	 * @param url
	 *            the url to set
	 */
	public void setUrl(String url) {
		this.url = url;
	}

	/**
	 * @return the duration
	 */
	public Long getDuration() {
		return duration;
	}

	/**
	 * @param long1
	 *            the duration to set
	 */
	public void setDuration(Long long1) {
		this.duration = long1;
	}

	/**
	 * @return the keyWords
	 */
	public List<String> getKeyWords() {
		return keyWords;
	}

	/**
	 * @param keyWords
	 *            the keyWords to set
	 */
	public void setKeyWords(List<String> keyWords) {
		this.keyWords = keyWords;
	}

	/**
	 * @return the categories
	 */
	public List<Category> getCategories() {
		return categories;
	}

	/**
	 * @param categories
	 *            the categories to set
	 */
	public void setCategories(List<Category> categories) {
		this.categories = categories;
	}

	/**
	 * @return the thumbnail
	 */
	public String getThumbnail() {

		return thumbnail;
	}

	/**
	 * @param thumbnail
	 *            the thumbnail to set
	 */
	public void setThumbnail(String thumbnail) {
		this.thumbnail = thumbnail;

	}

}
